#ifndef __PROJECT_H__
#define __PROJECT_H__
//头文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <unistd.h>
#include <errno.h>
#include <sys/ipc.h>
#include <sys/socket.h>
#include <string.h>
#include <signal.h>
#include <arpa/inet.h>
#include <sys/shm.h>
#include <termios.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <pthread.h>
#include <stdint.h>
#include "pwm.h"


#define FS4412_LED2_ON  0x10
#define FS4412_LED2_OFF  0x20
#define FS4412_LED3_ON  0x13
#define FS4412_LED3_OFF 0x23
#define STORAGE_NO	'2'
#define SEND_OK 0xAA
#define N 32



//结构体
typedef struct
{
	uint8_t head[3];	 //标识位st:
	uint8_t type;		 //数据类型
	uint8_t snum;		 //仓库编号
	uint8_t temp[2];	 //温度	
	uint8_t hum[2];		 //湿度
	uint8_t x;			 //三轴信息
	uint8_t y;			 
	uint8_t z;			 
	uint32_t ill;		 //光照
	uint32_t bet;		 //电池电量
	uint32_t adc; 		 //电位器信息
}sendEnv;						 // M0板搜集数据结构体





struct msg                 //数据下行结构 
{
	long type;
	unsigned char text[N];
};


//函数声明
//数据上行部分
void *pthread_data_collection(); //M0板数据搜集线程
void *pthread_insert_linklist(); //M0板数据写入链表线程
void *pthread_shm_refresh();     //M0板数据刷新至共享内存线程
//数据下行部分
void *pthread_M0_ctrl();         //M0板控制线程
void *pthread_A9_ctrl();		 //A9板控制线程



//全局变量
sendEnv myEnv;					//M0搜集环境数据结构体名
sendEnv *pmyEnv;				//映射共享内存返回值
static int semid;


pthread_mutex_t mutex;
pthread_cond_t notempty;










#endif
